//////////////////////////////////////////////////////////////////////
//                                                                  //
//                                                                  //
//              Copyright (C), 2000  SEIKO EPSON Corp.              //
//              ALL RIGHTS RESERVED                                 //
//                                                                  //
//                                                                  //
//   file name : log10.c                                            //
//                                                                  //
//   Revision history                                               //
//       00/02/10    first release                 M.Igarashi       //
//                                                                  //
//////////////////////////////////////////////////////////////////////


#include <math.h>
#include <smcvals.h>

// ALGORITHM
// 1. calculate natural logarithm
//      log10( x ) = log( x ) / log( 10 )
//

//  the architecture of double floating point
//
//   0 1          11                  31 32                               63 bit
//   -----------------------------------------------------------------------
//  | |   exponent  |                    fraction                           |
//   -----------------------------------------------------------------------
//
//  |               |                   |                                   |
//  |    12 bits          20 bits       |             32 bits               |
//  |            lower word             |            higher word            |
//
//         bit    0         sign bit         (  1 bit  )
//              1 - 11      exponent part    ( 11 bits )
//             12 - 63      fraction part    ( 52 bits )
//
//
 
double log10(double dfX){

	double	dfRet;

	dfRet	= log( dfX );

	if ( dfRet == P_INF._D || dfRet == NAN._D || dfRet == N_INF._D ){		// error check
		return dfRet;
	}else{
		dfRet = dfRet / LD;			// log (x)/ log(10)
		return dfRet;
	}
}
